//
//  CCStatus.swift
//  CC-SinaWeibo
//
//  Created by Chenchen on 16/2/21.
//  Copyright © 2016年 Chenchen. All rights reserved.
//

import UIKit

class CCStatus: NSObject {
    
    /// 微博ID
    var id: Int64 = 0
    
    /// 微博创建时间
    var created_at: String?
    
    /// 微博正文
    var text: String?
    
    /// 微博来源
    var source: String?
    
    /// 用户数据模型
    var user: CCUser?
    
    /// 转发微博, 如果是原创微博retweeted_status就不存在
    var retweeted_status: CCStatus?
    
    /// 配图视图数组的属性
    var pic_urls: [[String: String]]? {
        didSet {
            guard let urls = pic_urls else { // 判断urlsr是否为空
                return
            }
            // 走到这里就说明不为空,实例化NSURL类型的图片数组
            imageURLs = [NSURL]()
            // 遍历URL,获取对应的图片地址
            for item in urls {
                let urlString = item["thumbnail_pic"]
                let str = urlString?.stringByReplacingOccurrencesOfString("thumbnail", withString: "bmiddle")
                // 第一个"!"相信后段一定给urlString,第二个后端给的urlString一定是合法的
                let url = NSURL(string: str!)!
                // 将url对象添加到数组中
                imageURLs?.append(url)
                
            }
        }
    }
    /// 将pic_urls内的字典遍历,取出相对于的值,转换为NSURL类型,添加到数组中
    var imageURLs: [NSURL]?
    
    /// 使用kvc设置初始值
    init(dict: [String: AnyObject]) {
        super.init()
        // 用字典设置键的值
        setValuesForKeysWithDictionary(dict)
    }
    
    override func setValue(value: AnyObject?, forKey key: String) {
        // 判断
        if key == "user" {
            // 将AnyObject转化为字典对象
            if let dict = value as? [String: AnyObject] {
                // 对 user做字典转模型的操作
                user = CCUser(dict: dict)
                // 如果到这里完成,就提前终止
                return
            }
        }
        
        
        // 判断
        if key == "retweeted_status" {
            // 将AnyObject转化为字典对象
            if let dict = value as? [String: AnyObject] {
                // 对 user做字典转模型的操作
                retweeted_status = CCStatus(dict: dict)
                // 如果到这里完成,就提前终止
                return
            }
        }
        
        // 调用Super
        super.setValue(value, forKey: key)
    }
    
    
    // 过滤剩余的数据
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {
        
    }
}
